1. Field of the Invention
This invention relates to the field of data busses, and particularly to schemes for verifying the integrity of data conveyed on a data bus.
2. Description of the Related Art
Data busses, found in virtually all computers and computer-based products, are used to convey data between devices connected to the bus. When data is conveyed from an originating device to a receiving device, there exists the possibility that the data will become corrupted en route.
Various schemes have been developed to alleviate this problem. For example, various handshaking protocols exist which require a device to which a message is sent to acknowledge the message's receipt by sending an acknowledgment message back to the message originating device. Though effective for verifying that some kind of data was received, this technique does nothing to insure that the data was received correctly; i.e., it does not verify the integrity of the data conveyed between the devices.
Schemes that do verify the integrity of conveyed data typically involve the use of some type of "check sequence", i.e., one or more data bits that have a value based on the data conveyed. For example, a "parity bit" may be allotted a slot in a message, which is set high or low depending on the number of "1's" or "0's" in the message. When the message is received, the receiving device counts the message's "1's" or "0's" as appropriate, determines what the parity bit should be, and compares it with the bit received to determine the integrity of the message.
An extension of the parity bit approach requires the appending of a multi-bit check sequence to a message being sent. The value of the check sequence is calculated in a known manner based on the bits of the message. When the message is received, the same calculation is applied to the bits of the received message to determine what the check sequence should be. This predicted check sequence is compared to the received check sequence to determine message integrity.
Several methods are used to verify the integrity of conveyed data when a check sequence is employed. For example, when the check sequence calculated by the receiving device does not match that sent by the message originating device, the receiving device can send a message back to the originating device indicating that the message was not properly received. Such a message typically includes a "header", i.e., one or more bytes of overhead data that precede the actual message, and requires the receiving device to arbitrate for the bus. Alternatively, the originating device can send a message to the receiving device asking that the received data be read back, or that a message status byte--with accompanying header--be sent. In either case, the originating device is unable to actively verify that a message is received correctly without a subsequent bus operation; i.e., data verification requires a minimum of two bus operations.
Because the above-described data integrity verification methods require multiple bus operations, message headers, and/or bus arbitration, they occupy the bus for a considerable amount of time, resulting in a bandwidth requirement that may be unacceptably high--particularly for busses intended for use in battery-powered products such as cellular phones or handheld computers for which low-cost bus devices are preferred.
A need exists for a data bus system that provides data integrity verification without requiring excessive bandwidth and which is compatible with low-cost bus devices.